/*
js浮点数精度误差，如：0.4 + 0.03  = 0.4299999999998
这里不考虑边界情况：如科学计数法 3.14e2(3.14×10^2)、负数 -11.12
*/

// 小数位>2时四舍五入
export function formatNumber(num) {
    const s = String(num);
    if (!s.includes('.')) return num; // 整数
    const [, decimal] = s.split('.');
    return decimal.length <= 2 ? num : Number(num.toFixed(2));
}

// 任意小数位，十进制精确求和
export function addPrecise(...nums) {
    const maxDigits = Math.max(...nums.map(n => {
        const str = String(n || 0);
        const dot = str.indexOf('.');
        return dot === -1 ? 0 : str.length - dot - 1;
    }));
    const factor = 10 ** maxDigits;
    const sum = nums.reduce((acc, n) => {
        // 将 null、undefined、false 等转换为 0
        const num = Number(n || 0);
        return acc + Math.round(num * factor);
    }, 0);
    return sum / factor;
}

export default {formatNumber, addPrecise}